package com.foreknow.controller;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 1.什么是会话:他指的是服务器端与客户端之间的数据传输(登陆,购物车)
 * 2.会话技术:管理数据
 * 常用的会话技术:
 * 1.Cookie  数据会保存在客户端
 * 2.Session 数据保存在服务器端中
 *
 * 什么是Cookie:他是客户端的技术,程序会把每个用户的Cookie的形式写给各自的浏览器,当用户使用
 * 浏览器去访问Web的服务器资源时,它们会产生各自的数据
 *
 * Cookie类: 主要用于存储会话的数据
 *
 * 1.构造Cookie对象
 *
 * 2.设置Cookie 例如:可以设置Cookie的有效时间 setMaxAge(int expiry) 以秒为单位 1*24*60*60(一天)
 *
 * 3.发送客户单浏览器来保存 HttpServletResponse:addCookie(Cookie cookie)
 *
 * 4.客户端再向服务端发出请求的时候,服务端也可以接受cookie  Cookie[]  request.getCookie()
 *
 * Cookie的原理:
 * 1.在服务器中创建一个Cookie对象,将数据保存到会话中
 * 2.服务器会发送Cookie的信息给浏览器,之后会将Cookie保存到浏览器端
 * 3.浏览器会在下次访问的时候,会携带cookie的信息(这些信息都会保存在Http的请求头当中)
 * 4.服务器端会获取到游览器端携带的cookie
 *
 */

public class CookieDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //从服务器端向客户端写Cookie信息
    Cookie cookie = new Cookie("name","tom");
    cookie.setMaxAge(1*30*24*60*60);
    resp.addCookie(cookie);
    //获取客户端的cookie
    PrintWriter out = resp.getWriter();
    Cookie[] cookies = req.getCookies();
    if (cookies!=null){
        for(Cookie c:cookies){
            String name= c.getName();
            String value = c.getValue();
            out.println(name+"---"+value);
        }
    }else {
        out.println("没有接受到cookie数据");
    }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}
